const Upload = require('../../libs/upload')

/**
 * 音乐模型
 */
class MusicDemo {
    /**
     * 构造音乐对象
     * @param  {number} id       标识
     * @param  {string} name     歌曲名
     * @param  {string} artist   艺术家
     * @param  {number} duration 时长
     * @param  {string} music    歌曲文件名
     * @param  {string} poster   海报文件名
     * @param  {string} lyric    歌词文件名
     * @param  {string} albumName    专辑名称
     * @return {Music}           音乐对象
     */
    constructor(id, name, artist, duration, music, poster, lyric, albumName, playCount) {
        this.id = id
        this.name = name
        this.artist = artist
        this.duration = duration
        this.music = music
        this.poster = poster
        this.lyric = lyric
        this.albumName = albumName
        this.playCount = playCount
    }

    static find(limit = 0) {
        let list = []
        if (limit > 0) {
            const listTemp = storage.sort(function(a, b) {
                return b.id - a.id
            })
            list = listTemp.slice(0, limit)
        } else {
            list = storage
        }

        const new_list = list.map(item => {
            const temp = {}
            Object.assign(temp, item)
                // lodash
            temp.music = Upload.getUrl(temp.music)
            temp.poster = Upload.getUrl(temp.poster)
            temp.lyric = Upload.getUrl(temp.lyric)
            return temp
        })

        return new_list
    }

    static findOne(id) {
        const musicTemp = storage.find(s => s.id === id)
        if (musicTemp) {
            const Music = {}
            Object.assign(Music, musicTemp)
                // lodash
            Music.music = Upload.getUrl(Music.music)
            Music.poster = Upload.getUrl(Music.poster)
            Music.lyric = Upload.getUrl(Music.lyric)

            return Music
        }
        return musicTemp
    }

    delete() {
        return storage.splice(storage.indexOf(this), 1)
    }

    save() {
        storage.indexOf(this) === -1 && storage.push(this)
        return true
    }

    update() {
        return true
    }
}

const storage = [
    new MusicDemo(1, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(2, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(3, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(4, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(5, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(6, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(7, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(8, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(9, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(10, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(11, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(12, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(13, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(14, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(15, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(16, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(17, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(18, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(19, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
    new MusicDemo(20, '中国范', '玖月奇迹', 229.485714, '玖月奇迹 - 中国范儿.mp3', 'jyqj.png', 'url1.lrc', '依然范特西', 232023),
]

module.exports = MusicDemo